Mathematica and Signal Processing

<#1148#>Mathematica<#1148#> presents an attractive platform upon which to build an environment for signal processing, providing as it does many computational functions, arbitrary-precision arithmetic, and an array of symbolic operations, such as differentiation and integration, partial fraction decomposition, power series expansion, and polynomial factoring and expansion. These symbolic capabilities play a key role in computing symbolic transforms.

As a programming environment, <#1149#>Mathematica<#1149#> supports not only traditional programming paradigms (procedural, functional, data-directed), but also an object-oriented approach, since the programmer can attach data and code to the head of an expression, so that an object can ``know'' information about itself. Therefore, one can write code that does not have to be modified to accommodate a new data type. That is, properly written <#1150#>Mathematica<#1150#> code is incrementally extensible.

Three other appealing aspects of <#1151#>Mathematica<#1151#> for the representation and manipulation of signal processing expressions are the cascading of systems, dynamic data typing, and (conditional) pattern matching. As a consequence of <#62#><#1152#>Mathematica<#1152#><#62#>'s support of functional programming, a cascade of systems (operators) can be represented as nested calls to the corresponding objects. Dynamic data typing allows valueless symbols and permits variables to assume any data type. Finally, the availability of a powerful pattern matcher, including conditional rules, permits the development of complex rule bases to perform mathematical transforms.